package com.dhecp.project.system.mapper;

import java.util.List;
import java.util.Map;

import com.dhecp.core.layui.TreeDataModel;
import com.dhecp.core.genericDao.GenericDao;
import com.dhecp.core.layui.TreeSelectDataModel;
import com.dhecp.project.system.domain.SysDictionaryForModule;
import com.dhecp.project.system.domain.SysMenuInfo;

import org.apache.ibatis.annotations.Param;

/**
 * 菜单表 数据层
 * 
 * @author alula
 */
public interface SysMenuInfoMapper extends GenericDao<SysMenuInfo, String>{
	
    /**
     * 通过guid查询单条记录
     * @param guid
     * @return 实体MenuInfo
     * @author DH-Xxj
     */
    SysMenuInfo findMenuInfoByGuid(@Param("guid") String guid);

    /**
     * 直接查询菜单表的数据
     * @param params
     * @return List
     */
    List<SysMenuInfo> findMenuInfo(Map<String, Object> params);
    
    /**
     * 查询二级菜单数据
     * @param params
     * @return List
     */
    List<SysMenuInfo> findNextMenu(Map<String, Object> params);

    /**
     * 获取当前用户拥有的功能和菜单树
     * @param params
     * @return List
     * @author DH-Xxj
     */
    List<TreeDataModel> findMenuInfoTree(Map<String, Object> params);
    
    /**
     * 获取当前用户拥有的功能和菜单树
     * @param params
     * @return List
     * @author DH-Xxj
     */
    List<TreeSelectDataModel> findMenuInfoSelectTree(Map<String, Object> params);

    /**
     * 获取用户手机分组功能菜单
     * @param params
     * @return List - SysDictionaryForModule
     * @author DH-Xxj
     */
    List<SysDictionaryForModule> findMobileMenuInfo(Map<String, Object> params);
    
    /**
     * 新增菜单信息
     * @param menu 菜单信息
     * @return
     */
    public int insertMenu(SysMenuInfo menu);
    
    /**
     * 修改菜单信息
     * @param menu 菜单信息
     * @return
     */
    public int updateMenu(SysMenuInfo menu);
    
    /**
     * 查询菜单名称
     * @param menuCaption 菜单名称
     * @return 结果
     */
    public SysMenuInfo findMenuInfoByGuidCaption(@Param("menuCaption") String menuCaption);
    
    /**
     * 删除菜单信息
     * @param menu 菜单信息
     * @return
     */
    public int deleteMenuByGuid(SysMenuInfo menu);
    
}
